package com.xebest.web.service;

import com.xebest.web.form.XeVenAfterSaleCheckForm;
import com.xebest.web.form.XeVenAfterSaleDelForm;
import com.xebest.web.form.XeVenAfterSaleDetailForm;
import com.xebest.web.form.XeVenOrderRefundQueryForm;
import com.xebest.web.model.XeVenOrderRefundEntity;
import com.xebest.web.view.XeVenAfterSaleDetailView;
import com.xebest.web.view.XeVenOrderRefundView;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @desc: 退款单service
 * @author: chenjing
 * @createTime: 2017/6/22 0022 下午 7:29
 * @history:
 * @version:v1.0
 */
public interface XeVenOrderReFundService {

    /**
     * @Author:chenjing
     * @Description: 根据订单号查询已退款金额
     * @Date:下午 7:30 2017/6/22 0022
     * @params: * @param null
     * @return:
     */
     BigDecimal getRefundEdAmountByOrderId(String orderId,String userCode);

    /**
     * @Author:chenjing
     * @Description: 根据退款单号查询退款单信息
     * @Date:下午 5:25 2017/6/27 0027
     * @params: * @param null
     * @return:
     */
    XeVenOrderRefundEntity getOrderRefundByRefundCode(String orderRefundCode,String userCode);

    /**
     * @Author:chenjing
     * @Description: 审核 更新退款单信息
     * @Date:下午 5:39 2017/6/27 0027
     * @params: * @param null
     * @return:
     */
    int updateOrderRefund(XeVenOrderRefundEntity entity) throws  Exception;


    /**
     * @Author:chenjing
     * @Description:查询退款单列表
     * @Date:下午 4:27 2017/6/28 0028
     * @params: * @param null
     * @return:
     */
    List<XeVenOrderRefundView> getOrderRefundList(XeVenOrderRefundQueryForm form) throws  Exception;

    /**
     * @Author:chenjing
     * @Description: 批量审核退款单
     * @Date:下午 3:09 2017/7/5 0005
     * @params: * @param null
     * @return:
     */
    int batchOrderRefundList(XeVenAfterSaleCheckForm form) throws Exception;

    /**
     * @Author:chenjing
     * @Description:根据退款单号查询退款单详细信息
     * @Date:下午 4:04 2017/7/6 0006
     * @params: * @param null
     * @return:
     */
    List<XeVenAfterSaleDetailView> queryRefundDetail(XeVenAfterSaleDetailForm form);

    /**
     * @Author:chenjing
     * @Description:批量删除退款单
     * @Date:上午 11:23 2017/7/7 0007
     * @params: * @param null
     * @return:
     */
    int delRefundList(XeVenAfterSaleDelForm form);

    /**
     * @Author:chenjing
     * @Description:微信退款（批量）
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    Map refundAllByWxPay(XeVenAfterSaleDelForm form) throws Exception;

    /**
     * @Author:chenjing
     * @Description:其他非微信支付退款（批量）
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    Map refundAllByOnlinePay(XeVenAfterSaleDelForm form) throws Exception;

    /**
     * @Author:chenjing
     * @Description:手动同步状态
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    boolean queryRefundMoneyDetail(XeVenOrderRefundEntity entity) throws Exception;

    /**
     * @Author:chenjing
     * @Description:手动同步状态--微信支付
     * @Date:16:34 2017/8/7
     * @params: * @param null
     * @return:
     */
    Map queryRefundMoneyDetailByWxPay(XeVenOrderRefundEntity entity) throws Exception;

    /**
     * @Author:chenjing
     * @Description:微信退款（单条）
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    boolean refundByWxPay(XeVenOrderRefundEntity entity) throws Exception;

    /**
     * @Author:chenjing
     * @Description:其他非微信支付退款（单条）
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    boolean refundByOnlinePay(XeVenOrderRefundEntity entity) throws Exception;

    /**
     * @Author:chenjing
     * @Description:售后单类型退款（单条）
     * @Date:14:23 2017/8/5
     * @params: * @param null
     * @return:
     */
    int refundByAfterSale(XeVenOrderRefundEntity entity) throws Exception;

    /**
     * @Author:chenjing
     * @Description: 手动同步状态--在线支付
     * @Date:20:00 2017/9/6
     * @params: * @param null
     * @return:
     */
    Map queryRefundMoneyDetailByOnline(XeVenOrderRefundEntity entity) throws Exception;
    
    /**
     * 完成退款
     * @author: 李贝贝
     * @createTime: 2018年6月13日 下午1:43:49  
     * @history:  
     * @param entity
     * @return int
     */
    int finishRefund(XeVenOrderRefundEntity entity);
}
